#ifndef TIMETABLE_H
#define TIMETABLE_H


//----------------------------------------------------------------------------//
// I N C L U D E   Q T                                                        //
//----------------------------------------------------------------------------//
#include <QObject>
#include <QTime>
#include <QDate>


//----------------------------------------------------------------------------//
// I N C L U D E   P R O J E C T                                              //
//----------------------------------------------------------------------------//
#include "theater.h"


//----------------------------------------------------------------------------//
// M A C R O S                                                                //
//----------------------------------------------------------------------------//


//----------------------------------------------------------------------------//
// T Y P E S   &   D E F I N I T I O N S                                      //
//----------------------------------------------------------------------------//
// display type three dimension or not
typedef enum
{
  MOVIE_3D_NOK,
  MOVIE_3D_OK,
  MOVIE_3D_ALL
} Movie3D_t;

// dubbing type original voices or french voices
typedef enum
{
  MOVIE_DUB_VO,
  MOVIE_DUB_VF,
  MOVIE_DUB_ALL
} MovieDub_t;


//----------------------------------------------------------------------------//
// C L A S S   D E C L A R A T I O N                                          //
//----------------------------------------------------------------------------//
class TimeTable : public QObject
{
    Q_OBJECT
  public:
    //------------------------------------------------------------------------//
    // C O N T R U C T O R S                                                  //
    //------------------------------------------------------------------------//
    explicit TimeTable(QTime& time);


    //------------------------------------------------------------------------//
    // P U B L I C   M E T H O D S   D E C L A R A T I O N                    //
    //------------------------------------------------------------------------//
    // getter
    Theater* getTheater(void);
    QDate getDate(void);
    MovieDub_t getDub(void);
    Movie3D_t get3D(void);
    QTime getTime(void);
    // setter
    void setTheater(Theater* thtr);
    void setDate(QDate& date);
    void setDub(MovieDub_t& dub);
    void set3D(Movie3D_t& threeD);
    void setTime(QTime& time);
    // comparison
    bool isDifferent(Theater*& thtr,
                     QDate& date,
                     MovieDub_t& dub,
                     Movie3D_t& threeD,
                     QTime& time);
    // operator
    bool operator==(TimeTable& right);


    //------------------------------------------------------------------------//
    // P U B L I C   A T T R I B U T E S   D E C L A R A T I O N              //
    //------------------------------------------------------------------------//


    //------------------------------------------------------------------------//
    // S I G N A L S                                                          //
    //------------------------------------------------------------------------//


    //------------------------------------------------------------------------//
    // S L O T S                                                              //
    //------------------------------------------------------------------------//


  private:
    //------------------------------------------------------------------------//
    // P R I V A T E   M E T H O D S   D E C L A R A T I O N                  //
    //------------------------------------------------------------------------//


    //------------------------------------------------------------------------//
    // P R I V A T E   A T T R I B U T E S   D E C L A R A T I O N            //
    //------------------------------------------------------------------------//
    Theater*   Thtr;
    QDate      Date;
    MovieDub_t Dub;
    Movie3D_t  ThreeD;
    QTime      Time;
};


#endif // TIMETABLE_H
